// Arduino DC motor speed and direct control #include LiquidCrystal lcd(12, 9, 5, 4, 3, 2); #define pot 0 #define pwm1 10 #define pwm2 11 boolean direct = 0; int current; int Shutdown=0; int mA = 0; int hours; int minutes; int seconds; long hour = 3600000; // 3600000 milliseconds in an hour long minute = 60000; // 60000 milliseconds in a minute long second = 1000; // 1000 milliseconds in a second void setup() { lcd.begin(16, 2); pinMode(pwm1, OUTPUT); pinMode(pwm2, OUTPUT); } void loop() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Coloidal I=mA "); lcd.print(mA); long timeNow = millis(); hours = (timeNow) / hour; minutes = ((timeNow) % hour) / minute ; seconds = (((timeNow) % hour) % minute) / second; lcd.setCursor(0, 1); lcd.print("T:"); lcd.print(hours); lcd.print(":"); lcd.print(minutes); lcd.print(":"); lcd.print(seconds); current = analogRead(pot) / 4; mA=map(current, 0,255,0,10); if(direct) analogWrite(pwm1, current); else analogWrite(pwm2, current); direct=!direct; if(minutes>=0 && minutes<30){ digitalWrite(pwm1, 0); lcd.setCursor(10,1); lcd.print("P:+/-"); } if( minutes>=30 && minutes<59){ digitalWrite(pwm2, 0); lcd.setCursor(10,1); lcd.print("P:-/+"); } if(hours>=3){ digitalWrite(pwm1, 0); digitalWrite(pwm2, 0); lcd.setCursor(10,1); lcd.print("END"); } delay(100); }